SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


CREATE PROCEDURE [dbo].[LIQSueldoBasico]
@Agente INT,
@Servicio INT,
@Plaza INT,
@Resultado DECIMAL(18,4) OUTPUT,
@idLiquidacion INT,
@DiasALiquidar INT,
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
AS 

SET NOCOUNT ON

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 18/11/2005 - Se agregaron parametros @Desde y @Hasta para manejo de Fechas en Titulares y Suplentes
-- 09/07/2006 - Los parametros se obtienen de la funcion fnObtenerValorDeParametro con la fecha que corresponda.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DECLARE @ValorPuntoDocente DECIMAL(18,4)
DECLARE @SueldoBasico DECIMAL(18,4)
DECLARE @Afiliacion INT
DECLARE @horas INT
DECLARE @RegimenSalarial INT
DECLARE @Organizacion INT
DECLARE @SituacionRevista INT
DECLARE @NroError INT
DECLARE @FechaAlta DATETIME, @FechaBaja DATETIME
DECLARE @SueldoBasicoProporcional DECIMAL(18,4)
DECLARE @SubOrganizacion INT
DECLARE @CabeceraDeLiquidacion INT 

--SELECT @ValorPuntoDocente = CONVERT(DECIMAL(18,4), valor1) FROM tb_Parametros WHERE parametro = 'ValorPuntoDocente'
SELECT @ValorPuntoDocente = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('ValorPuntoDocente', @Hasta))

SELECT @Afiliacion = idAfiliacion FROM tb_Afiliaciones WHERE idAgente = @Agente
SELECT @horas= horas, @SubOrganizacion = SubOrganizacion FROM tb_Plazas WHERE idPlaza = @Plaza
SELECT @Organizacion = ubicacionOrig, @SituacionRevista = SituacionRevista FROM tb_ServiciosAgentes WHERE idservicioAgente =  @Servicio
SELECT @regimensalarial = C.regimensalarial FROM tb_cArgosSalariales C, tb_ServiciosAgentes S WHERE C.idCargo = S.CargoSalarial And idServicioAgente = @Servicio

-- Si es regimen por cargo PUNTOS * ValorPuntoDocente
-- Si es regimen por hora PUNTOS * HORAS * ValorPuntoDocente
IF @regimensalarial = 12 
  SELECT @SueldoBasico = (SELECT Puntos FROM tb_CargosSalariales, tb_ServiciosAgentes WHERE cargosalarial = idCargo AND idServicioAgente = @Servicio) * @ValorPuntoDocente
ELSE
  SELECT @SueldoBasico = (SELECT  Puntos * Horas  FROM tb_CargosSalariales, tb_ServiciosAgentes WHERE cargosalarial = idCargo AND idServicioAgente = @Servicio) * @ValorPuntoDocente

SELECT @DiasALiquidar = MontoHaberes FROM tb_RegistroDeLiquidaciones WHERE Concepto = 29  AND Servicio = @Servicio AND Liquidacion = @idLiquidacion

SELECT @SueldoBasicoProporcional = (@DiasALiquidar * @SueldoBasico) /  @DiasDelPeriodo
SELECT @Resultado = CONVERT(FLOAT, @SueldoBasico)	

If (SELECT OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion) IS NOT NULL
	SELECT @Organizacion = OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion

INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, DiasLiquidados, SubOrganizacion)
	VALUES (NULL, @Afiliacion, @Agente, NULL, 1, NULL, 4, NULL, NULL, NULL, NULL, NULL, NULL, @horas, 0, @idLiquidacion, 0, @SueldoBasicoProporcional, @Organizacion, NULL, @Servicio, @SituacionRevista, @diasALiquidar, @SubOrganizacion)

SELECT @NroError = @@ERROR

IF @NroError <> 0
  BEGIN 
	SELECT @CabeceraDeLiquidacion = IdCabeceraLiquidacion FROM tb_Liquidaciones WHERE IdLiquidacion = @IdLiquidacion

	 INSERT INTO tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio, CabeceraDeLiquidacion, NumeroDeError) VALUES
	(@Agente, 4, CONVERT(VARCHAR,@NroError), GETDATE(), @idLiquidacion, @Organizacion, @Servicio, @CabeceraDeLiquidacion, @NroError)
  END
GO
